package day08;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

/**
 * 使用异常捕获机制完成下述IO操作
 * 编写程序，要求下面的类实现功能:
 * 添加新员工
 * 要求用户输入一个员工信息，格式如下:
 * jackson,25,男,5000,2008-12-22
 * 用户输入后需要做下述验证:
 * 要求用户名长度在1-20个字符之间且必须是英文
 * 年龄在0-100之间的整数
 * 性别只能是:"男"或"女"
 * 当发现用户输入有不符合规定时，提醒用户
 * 相关内容输入不符合要求，并要求重新输入。
 * 都输入正确后，将该员工添加到emp.txt文件
 * 的最后一行。
 * 
 * @author Bonnie
 *
 */
public class Test06 {
    public static void main(String[] args) {
        while (true){
            Scanner input = new Scanner(System.in);
            System.out.println("输入一位员工信息(格式：jackson,25,男,5000,2008-12-22)");
            String emp = input.nextLine();
            String[] strs = emp.split(",");
            String result;
            if ((result = isRight(strs)) == null){
                System.out.println("输入成功");
                write(emp);
                System.out.println("写入成功");
                input.close();
                break;
            }else{
                System.out.println(result);
                System.out.println("请重新输入");
            }
        }
    }

    //验证
    public static String isRight(String[] strs){
        String name = strs[0];
        String age = strs[1];
        String gender = strs[2];
        String result = null;
        if(!name.matches("[a-zA-Z]*")){
            result+="名字中只能有英文"+"\r\n";
        }
        if(!age.contains(".")){
            int tage = Integer.parseInt(age);
            if(tage<0||tage>100){
                result+="年龄必须在0~100"+"\r\n";
            }
        }else {
            result+="年龄必须为整数"+"\r\n";
        }
        if(!"女".equals(gender)&&!"男".equals(gender)){
            result+="性别必须为男或女"+"\r\n";
        }
        return result;
    }

    //写入
    public static void write(String emp){
        BufferedWriter bw = null;
        try {
            bw = new BufferedWriter(new FileWriter("Home_Work/src/day08/emp.txt",true));
            bw.write(emp);
            bw.flush();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }finally {
            try {
                if (bw != null) {
                    bw.close();
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
